package q1217_minCostToMoveChips;

public class Solution {
    /*
    简化后非常简单：
    一次移动两次是不消耗任何代价的
    那么显然 我们将所有偶数或者奇数位置的筹码移动到同一个偶数或者奇数的位置 不需要任何代价
    所以 我们只需要假设将所有偶数的筹码移到0 奇数的筹码移到1 然后比较两个位置哪个筹码数量比较少
    移到另一个上面即可
     */
    public int minCostToMoveChips(int[] position) {
        int even = 0, odd = 0;
        for (int num : position) {
            if (num % 2 == 0) ++even;
            // 使用 num & 1 == 0 更好
            else ++odd;
        }

        return Math.min(even, odd);
    }
}
